﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGEB.Prototipo.Control;
using SIGEB.Modelo;
using SIGEB.Modelo.moduloEjemplar;
using CodigoBarras;
using Boleta;
using Impresion;
using System.Drawing.Printing;

namespace SIGEB.Prototipo.Vista.moduloDocumentos
{
    public partial class frm_vistaPreviaCodigos : frm_Base
    {
        Impresiones i1;

        public frm_vistaPreviaCodigos()
        {
            InitializeComponent();
        }

        public frm_vistaPreviaCodigos(controlPrincipal cp) : base(cp)
        {
            InitializeComponent();
            asignarUI(this.Controls);
        }

        public override void hacerVisible(object[] arg)
        {
            printPreviewControl1.Zoom = 1;
            txt_busqueda.Text = "";
            actualizarDatosEjemplares();
            //setValores();
            //boleta = new BoletaPrestamo(clasificacion, numAdqui, autor, titulo, fechaPrestamo, fechaDevolucion, nombre, idUsuario, tipoUsuario);
           // boleta.simulacionMedidas();
            //i1 = new Impresiones(boleta.GetWidth(), boleta.GetHeight());
            //i1.agregarDocumentoImpresion(boleta);
        }

        private LinkedList<string> escogidos()
        {
            LinkedList<string> nueva = new LinkedList<string>();
            DataGridViewSelectedCellCollection seleccionadas = dgv_ejemplar.SelectedCells;
            foreach (DataGridViewCell act in seleccionadas)
            {
                try
                {
                    string n = act.Value.ToString();
                    nueva.AddLast(n);
                }
                catch { }
            }

            return nueva;
        }

        private void graficarCodBarraEjemplares(LinkedList<string> ejemplares)
        {
            i1 = new Impresiones(850, 210);
            try
            {
                foreach (string e in ejemplares)
                {
                    if (e != "")
                    {
                        CodigoBarras.CodigoBarras nuevo = new CodigoBarras.CodigoBarras(e, "CMI");
                        nuevo.toMedium();
                        i1.agregarDocumentoImpresion(nuevo);
                    }
                }

                i1.visualizarCodigos(printPreviewControl1);
            }
            catch (Exception ex)
            {
                ventanaError(ex.Message);
            }
        }

        private void enviarAgraficarFromTextBox()
        {
            LinkedList<string> lista = fromTextBox();
            if (lista != null)
            {
                graficarCodBarraEjemplares(lista);
            }
        }

        private LinkedList<string> fromTextBox()
        {
            LinkedList<string> lista = new LinkedList<string>();
            if (!string.IsNullOrEmpty(txt_listaEjemplares.Text))
            {
                string[] arreglo = txt_listaEjemplares.Text.Split(',');
                foreach (string act in arreglo)
                {
                    lista.AddLast(act);
                }
            }
            return lista;
        }

        public void agregarEjemplares()
        {
            int salto = 23;
            int cont = 0;
           /* foreach (ejemplar e in lista)
            {
                Point punto = new Point(3, (salto*cont));
                CheckBox nuevo = new CheckBox();
                nuevo.Checked = true;
                nuevo.Location = punto;
                nuevo.Text = e.numAdquisicion;
                nuevo.Enabled = true;
                nuevo.Visible = true;
                cont++;
            }*/
        }

        private void actualizarDatosEjemplares()
        {
            LinkedList<ejemplar> ejemplares = cp.ctrlEjemplares.ejemplaresPorDocumento(txt_busqueda.Text);
            llenarDGVEjemplares(ejemplares);
        }

        private void llenarDGVEjemplares(LinkedList<ejemplar> ejemplares)
        {
            llenarColumnasDGV();
            if (ejemplares != null && !string.IsNullOrEmpty(txt_busqueda.Text))
            {
                foreach (ejemplar act in ejemplares)
                {
                    dgv_ejemplar.Rows.Add(act.numAdquisicion);
                }
            }
        }

        private void llenarColumnasDGV()
        {
            dgv_ejemplar.Columns.Clear();
            dgv_ejemplar.Columns.Add("Adquisicon", "Num Adquisición");
        }

        private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Return)
            {
                actualizarDatosEjemplares();
            }
        }

        private void btn_agregar_Click(object sender, EventArgs e)
        {
            agregarSeleccionadosAtextBox();
            txt_listaEjemplares_KeyDown(sender, new KeyEventArgs(Keys.Oemcomma));
        }

        private void agregarSeleccionadosAtextBox()
        {
            escribiendo = true;
            LinkedList<string> nuevos = escogidos();
            if (nuevos != null)
            {
                txt_listaEjemplares.Text = txt_listaEjemplares.Text.Trim();
                if (!string.IsNullOrEmpty(txt_listaEjemplares.Text) && txt_listaEjemplares.Text.Last() != ',')
                {
                    txt_listaEjemplares.Text += ',';
                }
                foreach (string act in nuevos)
                {
                    txt_listaEjemplares.Text += act + ',';
                }
            }
            escribiendo = false;
        }

        private void txt_listaEjemplares_TextChanged(object sender, EventArgs e)
        {
            enviarAgraficarFromTextBox();
        }


        private bool escribiendo;

        private void button1_Click(object sender, EventArgs e)
        {
            objetoReturn a = new objetoReturn();
            new busquedaDocumento(a, this.cp).ShowDialog();
            string b = a.objeto;
            txt_busqueda.Text = b;
            listarEjemplares();
        }

        private void txt_listaEjemplares_KeyDown(object sender, KeyEventArgs e)
        {
            if (!escribiendo)
            {
                if (e.KeyCode == Keys.Oemcomma)
                    enviarAgraficarFromTextBox();
            }
        }

        private void listarEjemplares()
        {

        }

        private void btn_imprimir_Click(object sender, EventArgs e)
        {
            i1.imprimirDocumentos();
        }
    }
}
